package com.aoxin.mapper.course.webCourse;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.joda.time.DateTime;

import com.aoxin.model.course.SlfMyCoursePage;
import com.aoxin.model.dto.ChildrenCoursePackageDto;

public interface MyCoursePageMapper {

	/**
	 * 新增我的课程包
	 * 
	 * @param slfMyCoursePage
	 * @return
	 */
	Integer insertMyCoursePage(SlfMyCoursePage slfMyCoursePage);

	/**
	 * 查询我的全部课程包|查询某个孩子的课程包
	 * 
	 * @param slfMyCoursePage
	 * @return
	 */
	List<SlfMyCoursePage> getMyCoursePage(SlfMyCoursePage slfMyCoursePage);

	/**
	 * 删除我的课程包
	 * 
	 * @param myCoursePageId
	 * @return
	 */
	Integer deleteMyCoursePage(@Param("myCoursePageId") Integer myCoursePageId);

	/**
	 * 批量删除我的课程包
	 * 
	 * @param myCoursePageIds
	 * @return
	 */
	Integer deleteMyCoursePages(List<Integer> myCoursePageIds);

	/**
	 * 修改我的课程包
	 * 
	 * @param slfMyCoursePage
	 * @return
	 */
	Integer updateMyCoursePage(SlfMyCoursePage slfMyCoursePage);

	/**
	 * 查询还有哪些课程包未分配班级
	 * 
	 * @param childrenId
	 *            孩子ID
	 * @param coursePackageId
	 *            课程包ID
	 * @return 课程包ID
	 */
	List<Integer> getCoursePageByUnallotted(@Param("childrenId") Integer childrenId, @Param("coursePackageId") Integer coursePackageId);

	/**
	 * 根据课程包ID查询未排课的孩子
	 * 
	 * @param childrenId
	 *            孩子ID
	 * @param coursePackageId
	 *            课程包ID
	 * @param coursePageId
	 *            未排课课程包ID
	 * @return 孩子ID集合
	 */
	List<Integer> getChildrenByCoursePage(@Param("childrenId") Integer childrenId, @Param("coursePackageId") Integer coursePackageId, @Param("coursePageId") Integer coursePageId);

	/**
	 * 查询孩子课程包
	 * 
	 * @return 孩子课程包
	 */
	List<ChildrenCoursePackageDto> getChildrenCoursePackage();
	
	/**
	 * 查询用户是否已购买上级课程包
	 * @param childrenId
	 * @param schoolCoursePageId
	 * @return
	 */
	Integer queryUserIsBuy(@Param("childrenId") Integer childrenId,@Param("schoolCoursePageId") Integer schoolCoursePageId);
	/**
	 * 查询课程包是否有上级
	 * @param schoolCoursePageId
	 * @param schoolId
	 * @return
	 */
	String queryCourseIsParent(@Param("schoolCoursePageId") Integer schoolCoursePageId,@Param("schoolId") Integer schoolId);
	/**
	 * 根据库包ID 查询校包ID
	 * @param coursePageId
	 * @param schoolId
	 * @return
	 */
	Integer querySchoolCoursePageId(@Param("coursePageId") Integer coursePageId,@Param("schoolId") Integer schoolId);
	
	/**
     * 查询默认娃娃已购买C课程包(C类包)
     * @param 
     * @return List<AloneCoursePage>
     */
    List<SlfMyCoursePage> getAloneCoursePagesCtypePay(Integer childrenId);
    
    //删除C类用户课程包
    void updateCourseC(Map<String,Object> map);
    
    //删除临时表的数据
    void deleteCourseTemporaryC(Map<String,Object> map);
    
    //C类课程预约
    void insertMyCoursePageC(Map<String,Object> map);
    
    //找到金钱
    Integer discountPrice(Map<String,Object> map);
    
    //找到账户立方币
    Integer getuserLfb(Integer userId);
    
    //修改账户立方币
    void updateLfb(Map<String,Object> map);
    
    //找到该课程价格
    double getdiscountPriceCourse(Integer courseId);
    
    //找到孩子Name
    String getchildrenName(@Param("childrenId")Integer childrenId);
    
    //修改状态
    void updateFlag(Map<String,Object> map);
    
    //增加排课C类
    void insertPk(Map<String,Object> map);
    
    //增加孩子购买信息
    void insertChildrenMessage(Map<String,Object> map);
    
    //取消主题课
    void cancelCourseTheme(Map<String,Object> map);
    
    //查询预约时的价格
    double getBespokePrice(Map<String,Object> map);
    
    //判断是否为0(C类统计人数)
    Integer getZjChildrenNumberCount(Map<String,Object> map);
    
    //拦截是否匹配
    Integer Ispipei(Map<String,Object> map);
    
    //今天的c类课程教室
    List<Map<String, Object>> getSlfClassroomCEmployeeToday(Map<String,Object> map);
    
    //统计(B类课程)该孩子的信息
    List<SlfMyCoursePage> getChildrenCoursePageCount(Integer childrenId);
    
    //(B类课程)已完课信息
    List<SlfMyCoursePage> getChildrenCoursePageAleary(Integer childrenId);
    
    //获取孩子已经完成了的课程
    List<SlfMyCoursePage> getChildrenCourseAleady(Integer childrenId);
    
    //找到开始时间
    String getCourseStartTime(Integer id);
    
    List<SlfMyCoursePage> queryChildrenPageB(@Param("childrenId")Integer childrenId,@Param("vipEffectiveTime")String vipEffectiveTime);
    
    List<Map<String,Object>>querySlfCoursePage(@Param("schoolPageId")Integer schoolPageId,@Param("schoolId")Integer schoolId);
    
    
    Integer queryFather(@Param("schoolPageId")Integer schoolPageId,@Param("childrenId")Integer childrenId,@Param("vipEffectiveTime")String vipEffectiveTime);
    
    List<Map<String,Object>>queryData(@Param("parentId")Integer parentId);
     
    //找到教室人数
    Integer getClassroomNumber(Map<String,Object> map);
     
    //判断今日是否已经排课
    Integer IsMakeLesson(String courseTime);
	/**
	 * 查询通过VIP买的包
	 * 
	 * @param childrenId
	 * @return
	 */
	List<Map<String, Object>> queryVipBuyCousePage(@Param("childrenId") Integer childrenId,
			@Param("vipEffectiveTime") String vipEffectiveTime);
	/**
	 * 添加VIP 购买的课程包数据
	 * @param childrenId
	 * @param schoolCoursePageId
	 * @param coursePageId
	 */
	void insertVipBuyCousePage(@Param("childrenId") Integer childrenId,
			@Param("schoolCoursePageId") Integer schoolCoursePageId, @Param("coursePageId") Integer coursePageId);

	//查询是否有购买这包的用户
	Integer IsPayCoursePage(Integer coursePageId);
	
	//修改状态(C类缺课)
	void updateTextC(String nowTime);
	
}
